// 创建和更新记录
// 1. 以openid 为用户id来添加更新删除数据（更改同一条数据）
// 2. 包含所有邮卡、更新时间、随机奖品
const cloud = require('wx-server-sdk')

cloud.init()
const db=cloud.database();
const col = db.collection('collectYou');
const _=db.command;

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

// 查询该用户在数据库中的记录
 let user = await col.where({
  '_openid':wxContext.OPENID
}).get();

  let type;

  //   随机邮字      随机一个邮的类型，type表示
  let rand = Math.random();
  switch (true) {
    case (rand < 0.3):
      type = 0;
      break;
    case (rand < 0.6 && rand >= 0.3):
      type = 1;
      break;
    case (rand < 0.9 && rand >= 0.6):
      type = 2;
      break;
    case (rand > 0.9):
      type = 3;
      break;
  }

 ////////////////进行判断是否新用户////////////////

  if (user.data.length == 0) {    //用户记录长度为0,代表第一次使用，使用add操作

    let words = [
    { name: '有嗨邮', type: 0, number: 0 },
    { name: '哟哟邮', type: 1, number: 0 },
    { name: '灰机邮', type: 2, number: 0 },
    { name: '厉害邮', type: 3, number: 0 }
    ];
    
    // 控制随机一个字 + 1
    // words[type].number += 1;

    let data = {
      '_openid': wxContext.OPENID,
      'words': words,
      'updateTime': '2019-1-7',
      'times': 1,
      'prize': null
    }

    let result = await col.add({
      data: data
    })

    return {
      msg: '新用户添加成功',
      success:true,
      result: result,
      user: user,
      type:type
    }

  }else{
    //除用户第一次扫邮外，都是更新操作
    user=user.data[0]
    if(user.times <= 0 && user.updateTime == getDay() ){//次数用完，当天。
      return {
        msg:'今天次数已用完',
        success:false,
        type:type
      }
    }
    // times代表剩余次数，在第二天时重置 (进来的时候已经用了一次，之后还有一次，所以一天总共两次)
    let times
    if (user.updateTime !== getDay() ){
        times = 1;
    }

    //增加一个
    // user.words[type].number += 1;

    let result = await col.where({
      '_openid':wxContext.OPENID
   }).update({
      data:{
    //  'words':user.words,
      // 可用次数-1
     'times': times || _.inc(-1),
      // 获取今天日期
    //  'updateTime': getDay()
      }
   })

    return {
      msg: '修改！成功',
      success: true,
      result: result,
      type:type
    }

  }

 

  
};

function getDay(){
  let d=new Date();
  return d.getFullYear()  + '-'+ ( d.getMonth()+1 ) +'-'+  d.getDate() ;
}